﻿/*!
 * 定义模块 Users (用户管理) 中所有功能的服务 API。
 * 
 * Copyright (c), 上海沃恩信息科技有限公司.
 * All rights reserved.
 * Licensed under BSD (https://www.pittypat.work/bsd.html).
 */

/*
 * @param {Object} $    jQuery 命名空间。
 * @param {Object} $$   pittypat 命名空间。
 * @param {Object} _mod 模块 Users (用户管理) 的命名空间。
 * 
 * 更多说明请参见：
 * https://www.pittypat.work/com/waln/pittypat/coding/help/_api.js.html。
 */
(function ($, $$, _mod) {
    'use strict';

    // 模块的 API 和 UI 命名空间
    var _api = _mod.api = _mod.api || {};

	/*
	 * 功能 List (用户列表) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // 页码
	 *     pageIndex: {int64?},
	 * 
	 *     // 页面尺寸
	 *     pageSize: {int64?},
	 * 
	 *     // 排序名称
	 *     orderName: {string(30)?},
	 * 
	 *     // 排序方向
	 *     orderDirection: {string(4)?},
	 * 
	 *     // 用户名称
	 *     // 用户的友好显示名称、登录名称或编号的全部或一部分。
	 *     name: {string(50)?},
	 * 
	 *     // 已锁定用户
	 *     // 查询已经锁定或者尚未锁定的用户。
	 *     locked: {bool?} 
	 * }
	 * 
	 * 输出(success.result):
	 * {
	 *     // 总行数
	 *     totalRows: {int64?},
	 * 
	 *     // 用户列表
	 *     // 符合条件的用户列表。
	 *     users: [{
	 *         // Id
	 *         id: {uuid?},
	 * 
	 *         // 登录名称
	 *         // 用户的登录名称。
	 *         loginName: {string?},
	 * 
	 *         // 编号
	 *         // 用户的编号，编号是唯一的，比如工号。登录时可以使用编号登录。
	 *         no: {string?},
	 * 
	 *         // 用户名称
	 *         // 用户的友好显示名称。
	 *         name: {string?},
	 * 
	 *         // 头像路径
	 *         // 用户头像文件的虚拟路径。
	 *         faceUrl: {string?},
	 * 
	 *         // 手机号码
	 *         // 用户的手机号码，如果提供了手机号码，必须是唯一的。
	 *         mobile: {string?},
	 * 
	 *         // 电子邮件地址
	 *         // 用户的电子邮件地址。如果提供了电子邮件地址，则必须是唯一的。
	 *         email: {string?},
	 * 
	 *         // 创建时间
	 *         // 创建用户账号的时间。
	 *         createTime: {datetime?},
	 * 
	 *         // 锁定时间
	 *         // 用户账号被锁定的时间。
	 *         lockTime: {datetime?},
	 * 
	 *         // 登录时间
	 *         // 用户最后一次登录系统的时间。
	 *         loginTime: {datetime?},
	 * 
	 *         // 登录后首页
	 *         // 用户在登录后进入的页面，由用户自己配置。支持 '~' 作为前缀的路径格式。
	 *         loginHomeUrl: {string?},
	 * 
	 *         // 登录后首页说明
	 *         // 对用户登录后首先进入的页面的说明信息。
	 *         loginHomeDescription: {string?} 
	 *     }, ...]
	 * }
	 */
    _api.list = $$.api({
        // 请求路径
        url: '~/waln/authority/users/list',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            if (!e.args) {
                e.message = '没有提供任何参数。';
                return;
            }

            // 验证 pageIndex (页码)
            if (!$$.util.is.long(e.args.pageIndex, 1, Long.MAX_VALUE)) {
                e.args.pageIndex = 1; // 默认页码 1
            }

            // 验证 pageSize (页面尺寸)
            if (!$$.util.is.long(e.args.pageSize, 1, 1000)) {
                e.args.pageSize = 20; // 默认页面尺寸 20
            }

            // 验证 orderName (排序名称)
            if (!$$.util.is.identifier(e.args.orderName)) {
                e.args.orderName = 'name'; // 默认排序名称
            }

            // 验证 orderDirection (排序方向)
            if (!$$.util.is.orderDirection(e.args.orderDirection)) {
                e.args.orderDirection = 'asc'; // 默认排序方向
            }
            
            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = e.args;
        }
    });

	/*
	 * 功能 Add (添加新用户) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // 登录名称
	 *     // 用户的登录名称。
	 *     loginName: {string(50)?},
	 * 
	 *     // 登录密码明文
	 *     // 用户登录密码的明文。
	 *     password: {string(30)?},
	 * 
	 *     // 编号
	 *     // 用户的编号，编号是唯一的，比如工号。登录时可以使用编号登录。
	 *     no: {string(20)?},
	 * 
	 *     // 用户名称
	 *     // 用户的友好显示名称。
	 *     name: {string(50)?},
	 * 
	 *     // 手机号码
	 *     // 用户的手机号码，如果提供了手机号码，必须是唯一的。
	 *     mobile: {string(20)?},
	 * 
	 *     // 电子邮件地址
	 *     // 用户的电子邮件地址。如果提供了电子邮件地址，则必须是唯一的。
	 *     email: {string(50)?},
	 * 
	 *     // 登录后首页
	 *     // 用户在登录后进入的页面，由用户自己配置。支持 '~' 作为前缀的路径格式。
	 *     loginHomeUrl: {string(200)?},
	 * 
	 *     // 登录后首页说明
	 *     // 对用户登录后首先进入的页面的说明信息。
	 *     loginHomeDescription: {string(100)?} 
	 * }
	 * 
	 * 输出(success.result):
	 * // 新用户
	 * // 如果添加成功，返回新用户的用户信息。
	 * user: {
	 *     // Id
	 *     id: {uuid?},
	 * 
	 *     // 登录名称
	 *     // 用户的登录名称。
	 *     loginName: {string?},
	 * 
	 *     // 编号
	 *     // 用户的编号，编号是唯一的，比如工号。登录时可以使用编号登录。
	 *     no: {string?},
	 * 
	 *     // 用户名称
	 *     // 用户的友好显示名称。
	 *     name: {string?},
	 * 
	 *     // 头像路径
	 *     // 用户头像文件的虚拟路径。
	 *     faceUrl: {string?},
	 * 
	 *     // 手机号码
	 *     // 用户的手机号码，如果提供了手机号码，必须是唯一的。
	 *     mobile: {string?},
	 * 
	 *     // 电子邮件地址
	 *     // 用户的电子邮件地址。如果提供了电子邮件地址，则必须是唯一的。
	 *     email: {string?},
	 * 
	 *     // 创建时间
	 *     // 创建用户账号的时间。
	 *     createTime: {datetime?},
	 * 
	 *     // 锁定时间
	 *     // 用户账号被锁定的时间。
	 *     lockTime: {datetime?},
	 * 
	 *     // 登录时间
	 *     // 用户最后一次登录系统的时间。
	 *     loginTime: {datetime?},
	 * 
	 *     // 登录后首页
	 *     // 用户在登录后进入的页面，由用户自己配置。支持 '~' 作为前缀的路径格式。
	 *     loginHomeUrl: {string?},
	 * 
	 *     // 登录后首页说明
	 *     // 对用户登录后首先进入的页面的说明信息。
	 *     loginHomeDescription: {string?} 
	 * }
	 */
    _api.add = $$.api({
        // 请求路径
        url: '~/waln/authority/users/add',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            if (!e.args) {
                e.message = '没有提供任何参数。';
                return;
            }

            // 验证 loginName (登录名称)
            if (!e.args.loginName) {
                e.message = '没有提供有效的登录名称。';
                return;
            }

            // 验证 password (登录密码明文)
            if (!$$.util.is.password(e.args.password)) {
                e.message = '没有提供有效的登录密码明文。';
                return;
            }
            
            // 验证 name (用户名称)
            if (!e.args.name) {
                e.args.name = e.args.loginName;
            }
            
            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = e.args;
        }
    });

	/*
	 * 功能 Edit (设置用户资料) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // Id
	 *     id: {uuid?},
	 * 
	 *     // 登录名称
	 *     // 用户的登录名称。
	 *     loginName: {string(50)?},
	 * 
	 *     // 编号
	 *     // 用户的编号，编号是唯一的，比如工号。登录时可以使用编号登录。
	 *     no: {string(20)?},
	 * 
	 *     // 用户名称
	 *     // 用户的友好显示名称。
	 *     name: {string(50)?},
	 * 
	 *     // 手机号码
	 *     // 用户的手机号码，如果提供了手机号码，必须是唯一的。
	 *     mobile: {string(20)?},
	 * 
	 *     // 电子邮件地址
	 *     // 用户的电子邮件地址。如果提供了电子邮件地址，则必须是唯一的。
	 *     email: {string(50)?},
	 * 
	 *     // 登录后首页
	 *     // 用户在登录后进入的页面，由用户自己配置。支持 '~' 作为前缀的路径格式。
	 *     loginHomeUrl: {string(200)?},
	 * 
	 *     // 登录后首页说明
	 *     // 对用户登录后首先进入的页面的说明信息。
	 *     loginHomeDescription: {string(100)?} 
	 * }
	 * 
	 * 输出(success.result):
	 * // 用户信息
	 * // 如果更新成功，返回用户的用户信息。
	 * user: {
	 *     // Id
	 *     id: {uuid?},
	 * 
	 *     // 登录名称
	 *     // 用户的登录名称。
	 *     loginName: {string?},
	 * 
	 *     // 编号
	 *     // 用户的编号，编号是唯一的，比如工号。登录时可以使用编号登录。
	 *     no: {string?},
	 * 
	 *     // 用户名称
	 *     // 用户的友好显示名称。
	 *     name: {string?},
	 * 
	 *     // 头像路径
	 *     // 用户头像文件的虚拟路径。
	 *     faceUrl: {string?},
	 * 
	 *     // 手机号码
	 *     // 用户的手机号码，如果提供了手机号码，必须是唯一的。
	 *     mobile: {string?},
	 * 
	 *     // 电子邮件地址
	 *     // 用户的电子邮件地址。如果提供了电子邮件地址，则必须是唯一的。
	 *     email: {string?},
	 * 
	 *     // 创建时间
	 *     // 创建用户账号的时间。
	 *     createTime: {datetime?},
	 * 
	 *     // 锁定时间
	 *     // 用户账号被锁定的时间。
	 *     lockTime: {datetime?},
	 * 
	 *     // 登录时间
	 *     // 用户最后一次登录系统的时间。
	 *     loginTime: {datetime?},
	 * 
	 *     // 登录后首页
	 *     // 用户在登录后进入的页面，由用户自己配置。支持 '~' 作为前缀的路径格式。
	 *     loginHomeUrl: {string?},
	 * 
	 *     // 登录后首页说明
	 *     // 对用户登录后首先进入的页面的说明信息。
	 *     loginHomeDescription: {string?} 
	 * }
	 */
    _api.edit = $$.api({
        // 请求路径
        url: '~/waln/authority/users/edit',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            if (!e.args) {
                e.message = '没有提供任何参数。';
                return;
            }

            // 验证 id (Id)
            if (!$$.util.is.uuid(e.args.id)) {
                e.message = '没有提供有效的Id。';
                return;
            }

            // 验证 loginName (登录名称)
            if (!e.args.loginName) {
                e.message = '没有提供有效的登录名称。';
                return;
            }
            
            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = e.args;
        }
    });

	/*
	 * 功能 SetPassword (设置登录密码) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // Id
	 *     id: {uuid?},
	 * 
	 *     // 登录密码明文
	 *     // 用户登录密码的明文。
	 *     password: {string(30)?} 
	 * }
	 * 
	 * 输出(success.result):
	 * null
	 */
    _api.setPassword = $$.api({
        // 请求路径
        url: '~/waln/authority/users/setpassword',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            if (!e.args) {
                e.message = '没有提供任何参数。';
                return;
            }

            // 验证 id (Id)
            if (!$$.util.is.uuid(e.args.id)) {
                e.message = '没有提供有效的Id。';
                return;
            }

            // 验证 password (登录密码明文)
            if (!$$.util.is.password(e.args.password)) {
                e.message = '没有提供有效的登录密码明文。';
                return;
            }

            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = e.args;
        }
    });

	/*
	 * 功能 SetFace (设置头像) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // Id
	 *     id: {uuid?},
	 * 
	 *     // 头像路径
	 *     // 用户头像文件的虚拟路径。
	 *     faceUrl: {string(200)?} 
	 * }
	 * 
	 * 输出(success.result):
	 * // 原用户头像路径
	 * // 用户原来头像的路径，用于删除相应的文件。
	 * oldFaceUrl: {string(200)?}
	 */
    _api.setFace = $$.api({
        // 请求路径
        url: '~/waln/authority/users/setface',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'UPOST'
    });

	/*
	 * 功能 Lock (锁定用户) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // Id
	 *     id: {uuid?},
	 * 
	 *     // 已锁定
	 *     // 锁定还是解锁用户。
	 *     locked: {bool?} 
	 * }
	 * 
	 * 输出(success.result):
	 * // 用户信息
	 * // 锁定或解锁后用户的信息。
	 * user: {
	 *     // Id
	 *     id: {uuid?},
	 * 
	 *     // 登录名称
	 *     // 用户的登录名称。
	 *     loginName: {string?},
	 * 
	 *     // 编号
	 *     // 用户的编号，编号是唯一的，比如工号。登录时可以使用编号登录。
	 *     no: {string?},
	 * 
	 *     // 用户名称
	 *     // 用户的友好显示名称。
	 *     name: {string?},
	 * 
	 *     // 头像路径
	 *     // 用户头像文件的虚拟路径。
	 *     faceUrl: {string?},
	 * 
	 *     // 手机号码
	 *     // 用户的手机号码，如果提供了手机号码，必须是唯一的。
	 *     mobile: {string?},
	 * 
	 *     // 电子邮件地址
	 *     // 用户的电子邮件地址。如果提供了电子邮件地址，则必须是唯一的。
	 *     email: {string?},
	 * 
	 *     // 创建时间
	 *     // 创建用户账号的时间。
	 *     createTime: {datetime?},
	 * 
	 *     // 锁定时间
	 *     // 用户账号被锁定的时间。
	 *     lockTime: {datetime?},
	 * 
	 *     // 登录时间
	 *     // 用户最后一次登录系统的时间。
	 *     loginTime: {datetime?},
	 * 
	 *     // 登录后首页
	 *     // 用户在登录后进入的页面，由用户自己配置。支持 '~' 作为前缀的路径格式。
	 *     loginHomeUrl: {string?},
	 * 
	 *     // 登录后首页说明
	 *     // 对用户登录后首先进入的页面的说明信息。
	 *     loginHomeDescription: {string?} 
	 * }
	 */
    _api.lock = $$.api({
        // 请求路径
        url: '~/waln/authority/users/lock',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            if (!e.args) {
                e.message = '没有提供任何参数。';
                return;
            }

            // 验证 id (Id)
            if (!$$.util.is.uuid(e.args.id)) {
                e.message = '没有提供有效的Id。';
                return;
            }

            // 验证 locked (已锁定)
            if (!$$.util.is.bool(e.args.locked)) {
                e.message = '没有提供有效的已锁定。';
                return;
            }

            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = e.args;
        }
    });

	/*
	 * 功能 Delete (删除用户账号) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // Id
	 *     id: {uuid?} 
	 * }
	 * 
	 * 输出(success.result):
	 * null
	 */
    _api.delete = $$.api({
        // 请求路径
        url: '~/waln/authority/users/delete',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            // 验证 id
            if (!$$.util.is.uuid(e.args)) {
                e.message = '没有提供有效的Id。';
                return;
            }

            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = {
                // Id
                id: e.args
            };
        }
    });

	/*
	 * 功能 Apps (App 列表) 的服务 API。
	 * 
	 * 输入(args):
	 * {}
	 * 
	 * 输出(success.result):
	 * // App 列表
	 * // 系统中已经安装的所有 App 的列表。
	 * list: [{
	 *     // Id
	 *     id: {uuid?},
	 * 
	 *     // 开发者代码
	 *     // App 开发者代码。
	 *     developerCode: {string?},
	 * 
	 *     // 开发者名称
	 *     // App 开发者的名称。
	 *     developerName: {string?},
	 * 
	 *     // App 标识符
	 *     // App 的标识符。
	 *     identifier: {string?},
	 * 
	 *     // App 名称
	 *     // App 的名称。
	 *     name: {string?},
	 * 
	 *     // App 版本
	 *     // App 的版本号。
	 *     version: {string?},
	 * 
	 *     // 模块数目
	 *     // App 中模块的数目。
	 *     moduleCount: {int16?},
	 * 
	 *     // 描述
	 *     // 对 App 的描述信息。
	 *     description: {string?},
	 * 
	 *     // 位置
	 *     // 在导航列表中，App 的先后顺序，这是由系统管理员设置的顺序。
	 *     position: {int32?},
	 * 
	 *     // 安装时间
	 *     // App 的安装时间。
	 *     installTime: {datetime?} 
	 * }, ...]
	 */
    _api.apps = $$.api({
        // 请求路径
        url: '~/waln/authority/users/apps',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
        }
    });

	/*
	 * 功能 Modules (模块列表) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // 隶属 App 的 Id
	 *     // 模块隶属的 App 的 Id。
	 *     appId: {uuid?},
	 * 
	 *     // 权利对象的 Id
	 *     // 被授权的权利对象的 Id，总是为用户的 Id。
	 *     roleId: {uuid?} 
	 * }
	 * 
	 * 输出(success.result):
	 * // 模块列表
	 * // 隶属于目标 App 的模块的列表。
	 * list: [{
	 *     // Id
	 *     id: {uuid?},
	 * 
	 *     // 隶属 App 的 Id
	 *     // 模块隶属的 App 的 Id。
	 *     appId: {uuid?},
	 * 
	 *     // 位置
	 *     // 模块在同一个 App 中先后显示顺序。
	 *     position: {int16?},
	 * 
	 *     // 标识符
	 *     // 模块的标识符。
	 *     identifier: {string?},
	 * 
	 *     // 模块名称
	 *     // 模块的名称。
	 *     name: {string?},
	 * 
	 *     // 呈现方式
	 *     // 指示模块应该如何对外呈现：0-Internal，1-UI，2-Service。
	 *     presentation: {int8?},
	 * 
	 *     // 允许匿名访问
	 *     // 指示模块是否允许匿名用户访问和使用。
	 *     allowAnonymous: {bool?},
	 * 
	 *     // 描述
	 *     // 对模块的描述信息。
	 *     description: {string?},
	 * 
	 *     // 授权时间
	 *     // 授予目标权利的时间。
	 *     grantTime: {datetime?},
	 * 
	 *     // 有效截止时间
	 *     // 授权有效截止时间。
	 *     expireTime: {datetime?} 
	 * }, ...]
	 */
    _api.modules = $$.api({
        // 请求路径
        url: '~/waln/authority/users/modules',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            if (!e.args) {
                e.message = '没有提供任何参数。';
                return;
            }

            // 验证 appId (隶属 App 的 Id)
            if (!$$.util.is.uuid(e.args.appId)) {
                e.message = '没有提供有效的隶属 App 的 Id。';
                return;
            }

            // 验证 roleId (权利对象的 Id)
            if (!$$.util.is.uuid(e.args.roleId)) {
                e.message = '没有提供有效的权利对象的 Id。';
                return;
            }

            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = e.args;
        }
    });

	/*
	 * 功能 Grant (授权) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // 模块的 Id
	 *     // 被授权允许访问的模块的 Id。
	 *     moduleId: {uuid?},
	 * 
	 *     // 权利对象的 Id
	 *     // 被授权的权利对象的 Id，总是为用户的 Id。
	 *     roleId: {uuid?},
	 * 
	 *     // 有效截止时间
	 *     // 授权有效截止时间。
	 *     expireTime: {datetime?} 
	 * }
	 * 
	 * 输出(success.result):
	 * null
	 */
    _api.grant = $$.api({
        // 请求路径
        url: '~/waln/authority/users/grant',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            if (!e.args) {
                e.message = '没有提供任何参数。';
                return;
            }

            // 验证 moduleId (模块的 Id)
            if (!$$.util.is.uuid(e.args.moduleId)) {
                e.message = '没有提供有效的模块的 Id。';
                return;
            }

            // 验证 roleId (权利对象的 Id)
            if (!$$.util.is.uuid(e.args.roleId)) {
                e.message = '没有提供有效的权利对象的 Id。';
                return;
            }
            
            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = e.args;
        }
    });

	/*
	 * 功能 Revoke (取消授权) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // 模块的 Id
	 *     // 被授权允许访问的模块的 Id。
	 *     moduleId: {uuid?},
	 * 
	 *     // 权利对象的 Id
	 *     // 被授权的权利对象的 Id，总是为用户的 Id。
	 *     roleId: {uuid?} 
	 * }
	 * 
	 * 输出(success.result):
	 * null
	 */
    _api.revoke = $$.api({
        // 请求路径
        url: '~/waln/authority/users/revoke',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            if (!e.args) {
                e.message = '没有提供任何参数。';
                return;
            }

            // 验证 moduleId (模块的 Id)
            if (!$$.util.is.uuid(e.args.moduleId)) {
                e.message = '没有提供有效的模块的 Id。';
                return;
            }

            // 验证 roleId (权利对象的 Id)
            if (!$$.util.is.uuid(e.args.roleId)) {
                e.message = '没有提供有效的权利对象的 Id。';
                return;
            }

            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = e.args;
        }
    });
})(jQuery, pittypat, pittypat.namespace('waln.authority.users'));
